import pandas as pd
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

Xcols = ['eirp',
          'ap_from_ap_0_max_ant_rssi', 'ap_from_ap_0_mean_ant_rssi', 'ap_from_ap_0_sum_ant_rssi',
        'ap_from_ap_1_max_ant_rssi', 'ap_from_ap_1_mean_ant_rssi', 'ap_from_ap_1_sum_ant_rssi',
          'sta_from_ap_0_max_ant_rssi', 'sta_from_ap_0_mean_ant_rssi', 'sta_from_ap_0_sum_ant_rssi',
          'sta_from_ap_1_max_ant_rssi', 'sta_from_ap_1_mean_ant_rssi', 'sta_from_ap_1_sum_ant_rssi',
        'sta_from_ap_2_max_ant_rssi', 'sta_from_ap_2_mean_ant_rssi', 'sta_from_ap_2_sum_ant_rssi',
          'sta_to_ap_0_max_ant_rssi', 'sta_to_ap_0_mean_ant_rssi', 'sta_to_ap_0_sum_ant_rssi',
          'sta_to_ap_1_max_ant_rssi', 'sta_to_ap_1_mean_ant_rssi', 'sta_to_ap_1_sum_ant_rssi',
        'sta_to_ap_2_max_ant_rssi', 'sta_to_ap_2_mean_ant_rssi', 'sta_to_ap_2_sum_ant_rssi']

# 读取数据
df = pd.read_csv('reduceRssi_3ap_enhancement.csv')
missing_values = df[Xcols].isnull().any(axis=1)
df = df[~missing_values]
print('data len', len(df))

# 分割特征列和目标列
X = df[Xcols]
y = df['nss']

# 创建PCA对象，将特征降维到3维
pca = PCA(n_components=3)
X_pca = pca.fit_transform(X)

# 创建3D图形
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
colors = ['r' if label == 1 else 'b' for label in y]

# 绘制散点图
ax.scatter(X_pca[:, 0], X_pca[:, 1], X_pca[:, 2], c=colors)
plt.show()